package com.iplatform.iplatformuser.function.group.dao;

import com.iplatform.module.privilege.group.*;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 *
 * @author yb
 *
 */
@Mapper
public interface PriGroupMapper {
	/**
	 * Title: queryResInfo
	 * Description: 查询权限表
	 * @param formMap
	 * @return
	 */
	public List<PriGroupInfoBean> queryGroupInfo();

	/**
	 * Title: queryGroupByName
	 * Description: 根据名称查询权限表
	 * @param formMap
	 * @return
	 */
	public List<PriGroupInfoBean> queryGroupByName(Map<String, String> formMap);

	/**
	 * Title: queryGroup
	 * Description: 更新页面权限表
	 * @param formMap
	 * @return
	 */
	public List<PriGroupInfoBean> queryGroup(Map<String, String> formMap);

	/**
	 * Title: deleteGroupById
	 * Description: 根据ID删除权限组信息
	 * @param
	 */
	public Integer deleteGroupById(String id);

	/**
	 * Title: updateGroup
	 * Description: 更新权限组
	 * @param formMap
	 * @return
	 */
	public int updateGroup(Map<String, String> formMap);

	/**
	 * Title: insertGroup
	 * Description: 添加数据字典
	 * @param formMap
	 * @return
	 */
	public int insertGroup(Map<String, String> formMap);

	/**
	 * Title: batchDeleteGroup
	 * Description: 批量删除权限组
	 * @param deleteIds
	 */
	public void batchDeleteGroup(String[] deleteIds);

	/**
	 * Title: queryMaxOrderNo
	 * Description: 查询权限组最大的排序号
	 */
	public String queryMaxOrderNo();

	/**
	 * Title: delWithGroupId
	 * Description: 根据GroupId删除记录
	 * @param formMap
	 */
	void delWithGroupId(Map<String, String> formMap);

	/**
	 * Title: delWithResourceId
	 * Description: 根据ResourceId删除记录
	 * @param roleId
	 */
	void delWithResourceId(String resourceId);

	/**
	 * Title: updateGroupResource
	 * Description: 绑定资源信息
	 * @param menuId
	 */
	void updateGroupResource(Map<String, String> formMap);

	/**
	 * <p>Title: querySelectWithOutRole</p>
	 * <p>Description: 绑定资源页面---未选择当前资源的列表信息</p>
	 * @param formMap
	 * @return
	 */
	List<Map<String, String>> listSelectWithOutResource(Map<String, String> formMap);

	/**
	 * Title: listSelectWithInRole
	 * Description: 绑定资源页面---已选择当前资源的列表信息
	 * @param formMap
	 * @return
	 */
	List<Map<String, String>> listSelectWithInResource(Map<String, String> formMap);

	/**
	 * 权限组绑定过的角色列表
	 * @param formMap
	 * @return
	 */
	List<Map<String, String>> queryInBindRoleList(Map<String, String> formMap);

	/**
	 * 权限组没有绑定过的角色列表
	 * @param formMap
	 * @return
	 */
	List<Map<String, String>> queryOutBindRoleList(Map<String, String> formMap);


	/**
	 * 删除权限组绑定的角色
	 * @param groupId
	 */
	void delGroupMedium(Map<String, String> formMap);

	/**
	 * 增加权限组角色绑定
	 * @param deleteId
	 * @param groupId
	 */
	void insertGroupMedium(Map<String, String> map);

	/**
	 * 根据groupId查询菜单资源（树状结构）
	 * @param formMap
	 */
	List<PriResourcesTree> queryMenuTreeByGroupId(Map<String, String> formMap);

	/**
	 * 根据groupId查询专业资源（树状结构）
	 * @param formMap
	 * @return
	 */
	List<PriResourcesTree> querySpecTreeByGroupId(Map<String, String> formMap);

	/**
	 * 根据groupId查询单位资源（树状结构）
	 * @param formMap
	 * @return
	 */
	List<PriResourcesTree> queryOrgTreeByGroupId(Map<String, String> formMap);

	/**
	 * 根据groupId查询指标资源（树状结构）
	 * @param formMap
	 * @return
	 */
	List<PriResourcesTree> queryTargetByGroupId(Map<String, String> formMap);

	/**
	 * 删除权限组绑定的操作
	 * @param groupId
	 */
	void delGroupOptByGroupId(@Param("groupId") String groupId);

	/**
	 * 权限组绑定操作
	 * @param list
	 */
	void insertGroupOpt(List<Map<String, String>> list);


	/**
	 * <p>Title: queryGroupName</p>
	 * <p>Description: 联想查询名称
	 * @param formMap
	 * @return
	 */
	List<HashMap<String, String>> queryGroupName();

	/**
	 * 根据groupId查询数据集
	 * @param formMap
	 * @return
	 */
	List<DataSetCategory> queryDataSet(Map<String, String> formMap);

	/**
	 * 根据groupId删除权限组数据包绑定
	 * @param formMap
	 */
	void deleteGroupDataSetByGroupId(@Param("groupId") String groupId);

	/**
	 * 新增权限组数据包绑定
	 * @param formMap
	 */
	void addGroupDataSet(List<Map<String, String>> list);

	/**
	 * 查询权限组对数据包字段的绑定
	 * @param formMap
	 */
	List<DataSetColumn> queryColumnByGroupIdAndSetId(Map<String, String> formMap);

	/**
	 * 删除权限组和数据包字段的绑定
	 * @param list
	 */
	void deleteGroupSetColumn(Map<String, String> formMap);

	/**
	 * 增加权限组和数据包的字段的绑定
	 * @param formMap
	 */
	void addGroupSetColumn(List<Map<String, String>> list);

	/**
	 * 根据groupId和SetId查询行条件
	 * @param formMap
	 * @return
	 */
	List<GroupDataSetRow> queryRowByGroupIdAndSetId(Map<String, String> formMap);

	/**
	 * 新增权限组与数据包行条件的绑定
	 * @param groupDataSetRow
	 */
	void addGroupDataSetRow(GroupDataSetRow groupDataSetRow);


	/**
	 * 删除权限组与数据包行权限的绑定
	 * @param id
	 */
	void delGroupDataSetRow(@Param(value = "id") String id);

	/**
     * 查询用户对应绑定的可用的数据包
     * @param id
     */
	List<String> queryDataSetIdByGroup(String userId);

	/**
     * 查询用户对应绑定的可用的数据包,的可用column
     * @param id
     */
    List<String> queryDataSetColIdByGroup(String userId, String dataSetId);

    /**
     * 查询用户对应绑定的可用的数据包,的可用column别名
     * @param id
     */
    List<String> queryDataSetColAliasByGroup(String userId, String dataSetId);

    /**
     * 查询用户，对应权限组 绑定的专业
     * @param id
     */
    List<String> queryUseSpecByUserId(String userId);

    /**
     * 查询用户，对应权限组 绑定的组织单位
     * @param id
     */
    List<String> queryUseOrgByUserId(String userId);

    /**
     * 查询用户，对应权限组 绑定的专业名称
     * @param id
     */
    List<String> queryUseSpecNameByUserId(String userId);

    /**
     * 同步权限组的资源到中间件
     * @param map
     */
    void sysResGroupToMedium(Map<String, String> map);

    /**
     * 删除中间件绑定的资源
     * @param map
     */
    void delMediumResource(Map<String, String> map);

    /**
     * 查询权限组绑定的资源
     * @param map
     */
    List<String> queryResourceByGroupId(Map<String, String> map);

    /**
     * 查询权限组绑定的中间件
     * @param map
     * @return
     */
    List<String> queryMediumByGroupId(Map<String, String> map);

    /**
     * 增加中间件资源绑定
     * @param map
     */
    void insertMediumResource(Map<String, String> map);

    /**
     * 查询中间件绑定的权限组
     * @param map
     */
    List<Map<String, String>> queryInBindGroup(Map<String, String> map);

    /**
     * 查询中间件未绑定的权限组
     * @param map
     * @return
     */
    List<Map<String, String>> queryOutBindGroup(Map<String, String> map);

    /**
     * 查询中间件绑定的菜单列表
     * @param map
     * @return
     */
    List<PriResourcesTree> queryMenuTreeByMediumId(Map<String, String> map);

    /**
     * 查询中间件绑定的单位列表
     * @param map
     * @return
     */
    List<PriResourcesTree> queryOrgTreeByMediumId(Map<String, String> map);

    /**
     * 查询中间件绑定的菜单
     * @param map
     * @return
     */
    List<PriResourcesTree> querySpecTreeByMediumId(Map<String, String> map);

    /**
     * 查询中间件绑定的指标
     * @param map
     * @return
     */
    List<PriResourcesTree> queryTargetByMediumId(Map<String, String> map);

    /**
	 * 根据groupId查询管理单位资源（树状结构）
	 * @param formMap
	 * @return
	 */
	public List<PriResourcesTree> queryManagerOrgTreeByGroupId(Map<String, String> formMap);


    /**
     * 查询用户，对应权限组 绑定的管理单位
     * @param id
     */
	public List<String> queryUseManagerOrgByUserId(String userId);

}
